package ar.com.arkios.kfconsap.tablas;

import ar.com.arkios.kfconmodelo.modelo.CodigoEAN;
import ar.com.arkios.kfconsap.excepciones.DataTypeInvalidConversionException;
import ar.com.arkios.kfconsap.excepciones.SapGeneralException;
import ar.com.arkios.kfconsap.excepciones.TableNotFoundException;
import com.sap.mw.jco.JCO;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Ale
 * @version 1.01
 * 
 */
public class EANCodigoDAO extends GenericSAPDAO {

   //Atributos
    private List <CodigoEAN> misCodigosEan; 

    
    //Constructores
    
    public EANCodigoDAO(JCO.Function aFunction) throws DataTypeInvalidConversionException, TableNotFoundException {
        super.setMyTableName("TI_ZMATEREAN");
        super.setMyTable(aFunction);        
        this.misCodigosEan = new ArrayList<CodigoEAN>();
        
    }   
    
    /**
     * Columnas de la Tabla TI_ZMATEREAN
     * MANDT		MANDT		CLNT	3	0   Mandante
     * MATNR		MATNR		CHAR	18	0   Número de material
     * ZEMBALAJE	ZZEMBALAJE	CHAR	8	0  Condición  embalaje de fruta
     * ZPESOENVA	ZPESOENVA	DEC	6	2  Peso del envase.
     * ZESPECIE		ZZESPECIE	CHAR	4	0 Especie de frutas
     * ZVARIEDAD	ZZVARIEDAD	CHAR	4	0 Variedad de fruta
     * ZENVASE		ZZENVASE	CHAR	6	0  Envase de frutas.
     * ZMARCA		ZMARCA		CHAR	4	0  Marca material
     * ZCALIDAD		ZZCALIDAD	CHAR	4	0 Calidad de la fruta
     * EAN11		EAN11		CHAR	18	0 Nro de art. europeo (EAN)
     * ZTEXTO1		ZZDEN_TARJ	CHAR	13	0 Descripción para Terjeton
     * ZTEXTO2		ZZDEN_TARJ	CHAR	13	0 Descripción para Terjeton
     * ZOBS		ZOBS		CHAR	55	0 Observaciones
     */
    
    public void findAll() throws SapGeneralException {
        CodigoEAN aCodigoEAN;
        try{
            for (int i = 0; i < super.getMyTable().getNumRows(); i++){
                super.getMyTable().setRow(i);            
                aCodigoEAN = new CodigoEAN(super.getMyTable().getString("MATNR"), super.getMyTable().getString("ZEMBALAJE"), super.getMyTable().getDouble("ZPESOENVA"), super.getMyTable().getString("ZVARIEDAD"), super.getMyTable().getString("ZENVASE"), super.getMyTable().getString("ZMARCA"), super.getMyTable().getString("ZCALIDAD"), super.getMyTable().getString("EAN11"), super.getMyTable().getString("ZTEXTO1"), super.getMyTable().getString("ZTEXTO2"), super.getMyTable().getString("ZOBS"));
                addEanCodd(aCodigoEAN);
            }
            
        }catch(JCO.ConversionException ex){
            try {
                throw new DataTypeInvalidConversionException(ex.getMessage());
            } catch (DataTypeInvalidConversionException ex1) {
                throw new SapGeneralException(ex1.getMessage());
            }
            
        }

    }
    
    /**
     * Solo para las pruebas
     */
    @Override
    public void printAll() {
        System.out.println("MANDT"+'\t'+"MATNR"+'\t'+"ZEMBALAJE"+'\t'+"ZPESOENVA"+'\t'+"ZESPECIE"+'\t'+"ZVARIEDAD"+'\t'+"ZENVASE"+'\t'+"ZMARCA"+'\t'+"EAN11"+'\t'+"ZTEXTO1"+'\t'+"ZTEXTO2"+'\t'+"ZOBS");
        for (int i = 0; i < super.getMyTable().getNumRows(); i++){
            super.getMyTable().setRow(i);            
            System.out.println(super.getMyTable().getString("MANDT") +
            '\t' + super.getMyTable().getString("MATNR") + 
            '\t' + super.getMyTable().getString("ZEMBALAJE") +            
            '\t' + super.getMyTable().getString("ZPESOENVA") + 
            '\t' + super.getMyTable().getString("ZESPECIE") +    
            '\t' + super.getMyTable().getString("ZVARIEDAD") + 
            '\t' + super.getMyTable().getString("ZENVASE") +    
            '\t' + super.getMyTable().getString("ZMARCA") + 
            '\t' + super.getMyTable().getString("EAN11") +                        
            '\t' + super.getMyTable().getString("ZTEXTO1") +
            '\t' + super.getMyTable().getString("ZTEXTO2") +
            '\t' + super.getMyTable().getString("ZOBS")
            );                
        }    
        
    }

    public List<CodigoEAN> getMisCodigosEan() {
        return misCodigosEan;
    }

    private void addEanCodd(CodigoEAN aCodigoEAN) {
        this.misCodigosEan.add(aCodigoEAN);
    }
    
    
}
